package com.apkupdater.adapter

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

import androidx.recyclerview.widget.RecyclerView
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import com.apkupdater.R
import com.apkupdater.model.ActionButton
import kotlinx.android.synthetic.main.button_bar_item.view.*

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

class ButtonBarAdapter : RecyclerView.Adapter<ButtonBarAdapter.ButtonBarViewHolder>()
{
	////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

	private var mItems: MutableList<ActionButton> = mutableListOf()

	////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

	override fun onBindViewHolder(
		holder: ButtonBarViewHolder,
		position: Int
	) {
		holder.bind(mItems[position])
	}

	////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

	override fun onCreateViewHolder(
		parent: ViewGroup,
		viewType: Int
	): ButtonBarViewHolder {
		val v : View = LayoutInflater.from(parent.context).inflate(R.layout.button_bar_item, parent, false)
		return ButtonBarViewHolder(v)
	}

	////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

	override fun getItemCount(
	): Int {
		return mItems.count()
	}

	////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

	class ButtonBarViewHolder(view: View)
		: RecyclerView.ViewHolder(view)
	{
		private val mView : View = view

		fun bind(
			data : ActionButton
		) {
			mView.button.text = data.text
			mView.button.setOnClickListener { data.callback() }
			if (data.loading) {
				mView.progress_bar.visibility = View.VISIBLE
				mView.button.visibility = View.INVISIBLE
			} else {
				mView.progress_bar.visibility = View.INVISIBLE
				mView.button.visibility = View.VISIBLE
			}
		}
	}

	////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

	fun addButton(
		button : ActionButton
	) {
		mItems.add(button)
	}

	////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////